1. Field of the Invention
The present invention relates generally to data transfer in a computer based communication system.
2. Related Art
Traditional communication systems can include a host computer platform, such as a personal computer (PC) running applications such as Oracle, file transfer protocol (FTP), web browsers, etc. It can also include a network interface device (NID) and protocol processing modules that enable the system to transfer data via a computer network. In order to accommodate the transfer of data packets needed to support these applications, transmission control protocols (TCP) and other related techniques are used to properly format the data packets. This formatting facilitates the reception of these packets by remote-end equipment connected to the host computer via one or more computer networks.
TCP Internet Protocol (TCP/IP) is an example of one suite of protocols used in conventional computer networks, such as the Internet. These protocols, which are added to data packets, are typically processed within the host platform by a software module known as a networking protocol stack. A popular implementation of the networking protocol stack is the host TCP stack.
As data rates of computer networks have increased, the TCP stacks have become system choke points. More specifically, the throughput of these TCP stacks is insufficient to accommodate the higher network data rates.
As a solution to this choke-point, an offload TCP stack, also known as a TCP Offload Engine (TOE), can be used to process the packets instead of the host TCP stack. This approach frees host resources for processing of the application and allows sustained “wire speed” throughput that can take advantage of today's faster networks.
The traditional communication systems, however, are unable to determine when it is more efficient to process packets within the host TCP stack or when the packets can be more efficiently processed within the offload TCP stack (or TOE). Stated another way, the traditional communication systems are unable to smartly offload (or upload) processing associated with establishing individual TCP connections.
More particularly, there are inherent hardware costs associated with each network connection that a TOE has to support. As more and more individual connection processing (i.e. connections) is offloaded to the TOE, the TOE must be of a more expensive design to accept the additional connections. Additionally, if the system desires to offload more connections than the TOE can accept, based on its architecture, then the number of connections becomes another limitation, or choke point, for the system.
It is possible, however, to offload only a portion of the total connections supported at any one time. Some of the connections can be offloaded to the TOE while other connections continue to be processed within the Host software based TCP stack. Any individual connection, however, must be individually processed in one place or the other. This creates the need for a type of “switch” mechanism to accurately direct traffic requests to the correct stack for processing.
What is needed, therefore, is a switch to smartly and efficiently determine the best set of connections that can be offloaded from the host TCP stack to the TOE, or similar hardware components. Such a switch will reduce the formation of protocol processing choke points and ultimately increase the system's throughput despite connection limitations in the TOE technology.